#include "mystrct.h"
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>

void initS(); //显示程序信息
void menu();  //菜单函数

/**
 * @brief 主函数 程序的入口
 * 
 * @return int 正常退出返回0
 */
int main()
{
    menu();
    return 0;
}

/**
 * @brief 显示程序信息---姓名-学号等
 * 
 */
void initS()
{
    int f = open("./readme.data", O_RDONLY);
    if (f == -1)
    {
        printf("open failed!\n");
        return;
    }
    char buffer[128]; //缓冲区
    int cnt = 0;      //实际读到的字符
    while ((cnt = read(f, buffer, 128)) != 0)
    {
        if (cnt < 128)
        {
            //处理最后一次读到的结果
            buffer[cnt] = '\0';
        }
        printf("%s", buffer);
    }
    //关闭文件
    close(f);
    fputs("press any key cotinue.\n", stdout);
    fgetc(stdin);
}

/**
 * @brief 菜单函数，程序功能的体现
 * 
 */
void menu()
{
    StuinfoPtr stuList;
    init(&stuList);
    char *msg = "****** 操作码\n\
    1. 添加数据 \n\
    2. 删除数据 \n\
    3. 查询数据 \n\
    4. 显示数据 \n\
    5. 退出系统\n\
*****Please Input : ";
    initS();
    char tag = '1';
    char buffer[64];
    while (1)
    {
        if (tag >= '1' && tag <= '5')
            fputs(msg, stdout);
        scanf("%c", &tag);
        switch (tag)
        {
        case '1':
            add(&stuList);
            fgetc(stdin); //吃掉换行符
            break;
        case '2':
            fputs("input del name: \n", stdout);
            fgetc(stdin); //吃掉换行符
            fgets(buffer, 64, stdin);
            buffer[strlen(buffer) - 1] = '\0';
            del(&stuList, buffer);
            break;
        case '3':
            fputs("input search name: \n", stdout);
            fgetc(stdin); //吃掉换行符
            fgets(buffer, 64, stdin);
            buffer[strlen(buffer) - 1] = '\0';
            search(&stuList, buffer);
            break;
        case '4':
            show(stuList->no);
            fgetc(stdin);
            break;
        case '5':
            fputs("bye.\n", stdout);
            exit(0);
            break;
        default:
            fputs("input valid!\n", stdout);
            break;
        }
        fputs("press any key cotinue.\n", stdout);
        fgetc(stdin);
    }
}